<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>systemd.device
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>systemd.device 中文手册</h1><h2 id="auth_name">译者：<strong><a href="../index.html">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="../index.html">金步国作品集</a> [ <a href="../index.html">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="systemd.device"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>systemd.device — 设备单元配置</p></div><div class="refsynopsisdiv"><h2>大纲</h2><p><code class="filename"><em class="replaceable"><code>device</code></em>.device</code></p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="systemd.device.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p>以
    "<code class="literal">.device</code>" 为后缀的单元文件，
    封装了一个位于
    sysfs/<a href="udev.html#"><span class="citerefentry"><span class="refentrytitle">udev</span>(7)</span></a>
    中的设备。</p><p>此类单元没有专用的配置选项。
    <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>
    中描述了通用于所有单元类型的配置选项(亦称"配置指令"或"单元属性")，
    它们位于
    "<code class="literal">[Unit]</code>" 与 "<code class="literal">[Install]</code>"
    小节。由于此类单元没有专用的配置选项，
    所以并不存在专用的 "<code class="literal">[Device]</code>" 小节。</p><p>systemd 会自动动态的为所有带有"systemd"标记的设备创建 device 单元。
    可以利用这个特性定义设备与单元之间的依赖关系。
    可以通过在 udev 的 .rules 文件中使用 "<code class="literal">TAG+="systemd"</code>" 来添加"systemd"标记。
    所有块设备与所有网络设备都默认带有"systemd"标记，
    此外，还有个别其他设备也默认带有"systemd"标记。
    详见
    <a href="udev.html#"><span class="citerefentry"><span class="refentrytitle">udev</span>(7)</span></a>
    手册。</p><p>device 单元的名称由该设备在 <code class="filename">/sys</code>
    与 <code class="filename">/dev</code> 中的路径决定。
    例如 <code class="filename">/dev/sda5</code> 对应的单元名称是
     <code class="filename">dev-sda5.device</code> 。
    有关将路径转化为单元名称的详细规则，
    参见
    <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a> 手册。</p><p>每当有设备生成 "<code class="literal">changed</code>" 事件时，
    systemd 都会重新加载对应的设备单元。
    其他单元可以使用 <code class="varname">ReloadPropagatedFrom=</code>
    对设备事件作出反应。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="自动依赖">自动依赖<a class="headerlink" title="Permalink to this headline" href="systemd.device.html#%E8%87%AA%E5%8A%A8%E4%BE%9D%E8%B5%96">¶</a></h2><div class="refsect2"><a name="id-1.6.2"></a><h3 id="隐含依赖">隐含依赖<a class="headerlink" title="Permalink to this headline" href="systemd.device.html#%E9%9A%90%E5%90%AB%E4%BE%9D%E8%B5%96">¶</a></h3><p>许多单元依赖于特定的设备，
      并且可以自动获得对相应 device 单元的依赖。例如，
      <code class="filename">.socket</code>
      单元可以自动获得对
      <code class="varname">BindToDevice=</code> 指定的网络接口的 device 单元的依赖。
      同样，swap 与 mount 单元也可以自动获得对所需块设备的 device
      单元的依赖。</p></div><div class="refsect2"><a name="id-1.6.3"></a><h3 id="默认依赖">默认依赖<a class="headerlink" title="Permalink to this headline" href="systemd.device.html#%E9%BB%98%E8%AE%A4%E4%BE%9D%E8%B5%96">¶</a></h3><p> device 单元没有默认依赖。</p></div></div><div class="refsect1"><a name="id-1.7"></a><h2 id=" udev 规则库"> udev 规则库<a class="headerlink" title="Permalink to this headline" href="systemd.device.html#%20udev%20%E8%A7%84%E5%88%99%E5%BA%93">¶</a></h2><p>对 device 单元的配置，既可以通过修改单元文件实现，也可以直接通过配置 udev 规则库实现。因为 systemd 仅为带有 "<code class="literal">systemd</code>"
    标记的设备创建 device 单元，所以，下列属性仅可用于带有 "<code class="literal">systemd</code>" 标记的设备。可配置的 udev 设备属性如下：</p><div class="variablelist"><dl class="variablelist"><dt id="SYSTEMD_WANTS="><span class="term"><code class="varname">SYSTEMD_WANTS=</code>, </span><span class="term"><code class="varname">SYSTEMD_USER_WANTS=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.device.html#SYSTEMD_WANTS=">¶</a></dt><dd><p>添加对其他单元的 <code class="varname">Wants=</code> 依赖。
        systemd 系统实例使用 <code class="varname">SYSTEMD_WANTS=</code> 属性、
        systemd 用户实例使用 <code class="varname">SYSTEMD_USER_WANTS=</code> 属性。
        这两个属性可用于实现在特定设备可用时自动启动期望的单元。</p><p>注意，仅在设备首次激活时才会启动 <code class="varname">Wants=</code> 依赖的单元。
        因此，向已激活的设备中添加 <code class="varname">Wants=</code> 依赖是没有意义的，但可以使用下面的
        <code class="varname">SYSTEMD_READY=</code> 属性来控制是否将设备视为"已激活"，
        进而控制何时触发依赖关系。</p><p>属性值是一个空格分隔的单元名称列表。
        如果使用了一个单元模板(单元名称中包含了一个 "<code class="literal">@</code>" 字符，
        但在 "<code class="literal">@</code>" 字符之后的实例名称为空)，
        那么该模板将会被该设备的 "<code class="literal">sysfs</code>"
        路径自动实例化(也就是将转义后的路径作为实例化参数插入到模板名称中)。
        此特性常用于为每个出现并匹配特定属性的设备实例化一次特定的模板。</p></dd><dt id="SYSTEMD_ALIAS="><span class="term"><code class="varname">SYSTEMD_ALIAS=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.device.html#SYSTEMD_ALIAS=">¶</a></dt><dd><p>为该 device 单元添加一个别名。
        必须是一个由绝对路径
        转化而来的单元名称(见上文)。</p></dd><dt id="SYSTEMD_READY="><span class="term"><code class="varname">SYSTEMD_READY=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.device.html#SYSTEMD_READY=">¶</a></dt><dd><p>设为 0 表示始终将该设备视为"已拔出"，即使它实际上依然存在于 udev 设备树中。
        默认值 1 表示只要该设备存在于 udev 设备树中，
        就视为"已插入"。</p><p>该属性主要用于这样的设备：最初以"尚未初始化"的状态出现在设备树中(此时设备尚不可用)，
        接着在完成初始化之后再生成一个 "<code class="literal">changed</code>" 事件(此时设备已可用)。
        注意，当某设备的 <code class="varname">SYSTEMD_READY=0</code> 时，为其设置的 <code class="varname">SYSTEMD_WANTS=</code>
        将会失效。</p></dd><dt id="ID_MODEL_FROM_DATABASE="><span class="term"><code class="varname">ID_MODEL_FROM_DATABASE=</code>, </span><span class="term"><code class="varname">ID_MODEL=</code></span><a class="headerlink" title="Permalink to this term" href="systemd.device.html#ID_MODEL_FROM_DATABASE=">¶</a></dt><dd><p>设置该 device 单元的
        描述字符串。</p></dd></dl></div></div><div class="refsect1"><a name="id-1.8"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="systemd.device.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
        <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
        <a href="systemctl.html#"><span class="citerefentry"><span class="refentrytitle">systemctl</span>(1)</span></a>,
        <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>,
        <a href="udev.html#"><span class="citerefentry"><span class="refentrytitle">udev</span>(7)</span></a>,
        <a href="systemd.directives.html#"><span class="citerefentry"><span class="refentrytitle">systemd.directives</span>(7)</span></a>
      </p></div></div></body></html>
